package com.tom.architect.party3.day23.net;

import com.tom.architect.party3.day23.response.entity.ResponseEntity;

import java.io.PrintWriter;

// 专门处理json的Servlet 基类。
public abstract class BaseJsonServlet extends BaseServlet {

    @Override
    protected void onResponse(HttpServletRequest req, HttpServletResponse resp)
        /* throws IOException ServletException, */ {
// resp.setContentType("text/html; charset=utf-8"); // 处理服务器返回数据中文乱码，文本，编码方式utf8。
        // 处理逻辑交给子类
        ResponseEntity responseEntity = null;
        try { // 统一捕捉异常处理。
            responseEntity = onHandler(req, resp);
        } catch (Exception e) {
            // 发生异常，返回默认的Entity.*******出现异常了。给默认的Entity。
            // 报服务器处理出错。
            responseEntity = new ResponseEntity();
        }

        PrintWriter printWriter = resp.getWriter();
        // fastJson.jar
//        String responseJsonStr = JSON.toJSONString(responseEntity); // entity 转Json
        String responseJsonStr = null;
        printWriter.write(responseJsonStr); // 写入数据给 app端。
        printWriter.flush();
        printWriter.close();
    }
    // 返回数据：{code:"0000",msg:"OK",data:{}}

    protected abstract ResponseEntity onHandler(HttpServletRequest req, HttpServletResponse resp)
            throws Exception;

}
